import request from "@/utils/request"

// 1. 销售列表 单个数据类型
export interface baseSaleAttrType {
  id:number;
  name:string
}
//  所有销售列表的类型
export type baseSaleAttrListType = baseSaleAttrType[]

// 3. 某一个的spu信息类型
export interface SpuInfoType {
  category3Id: number | null;
  description: string;
  id?: number;
  spuName: string;
  tmId: number;
  spuImageList: SpuImgListType | null;
  spuSaleAttrList: SpuSaleAttrListType | null;

}

// 所有spu列表的类型
export type SpuInfoListType = SpuInfoType[]

//  4. Spu分页列表数据类型
export interface SpuListType {
  total: number;
  size: number;
  current: number;
  searchCount: boolean;
  pages: number;
  records: SpuInfoListType;
}


// 5. spu 图片列表的某个类型
export interface SpuImgItemType {
  id?:number,
  imgName:string;
  imgUrl:string;
  spuId?:number; // 当前图片所在的spuId
  name?:string; // 图片墙展示时 使用
  url?:string; // 图片墙展示时 使用
  response?:any; // 新增图片时 会蹦出来的属性
  isDefault?: string; // skuform 用到的默认图片属性
}

// 6. 某个spu的图片列表类型
export type SpuImgListType = SpuImgItemType[]


// 7. 销售属性值列表的某一项属性的类型
export interface SaleAttrValueItemType {
  baseSaleAttrId:number; // 当前销售属性在基础销售属性列表中的id
  id?:number;
  isChecked?:string; // 当前销售属性是否被选中
  saleAttrName:string; //销售属性名
  saleAttrValueName:string; //销售属性值
  spuId?:number // 当前销售属性的spuId
}

// 所有销售属性值列表的类型
export type SpuSaleAttrListType = SaleAttrValueItemType[]

// 8.销售属性列表的某一项类型
export interface SaleAttrItemType {
  baseSaleAttrId:number; // 当前销售属性在基础销售属性列表中的id
  id?:number;
  saleAttrName:string; // 当前销售属性名称
  spuId?:number; // 当前销售属性的spuId
  spuSaleAttrValueList:SpuSaleAttrListType, // 当前销售属性 的属性值列表
  isEdit?:boolean;
  selectData?:string  // 新增属性 用来在skuform页面收集选中
}

// 销售属性列表的类型
export type SaleAttrListType = SaleAttrItemType[]




// 1. 所有销售列表
export const reqSaleAttrList = () => (
  request.get<any,baseSaleAttrListType>(`/admin/product/baseSaleAttrList`)
)


// 2. 删除spu
export const reqDeleteSpu = (spuId:number) => (
  request.delete<null,null>(`/admin/product/deleteSpu/${spuId}`)
)


// 3. 获取spu列表
export const reqSpuList = (page:number,limit:number,category3Id:number) => (
  request.get<any,SpuListType>(`/admin/product/${page}/${limit}?category3Id=${category3Id}`)
)


// 4. 新增spu
export const reqAddSpu = (spuInfo:SpuInfoType) =>(
  request.post<any,any>(`/admin/product/saveSpuInfo`, spuInfo)
)

// 5. 修改spu 根据spuId
export const reqUpdateSpu = (spuInfo:SpuInfoType) => (
  request.post<any,any>(`/admin/product/updateSpuInfo`, spuInfo)
)

// 6.根据spuId获取消费属性
export const reqSaleAttrSelf = (spuId:number) => (
  request.get<any,SaleAttrListType>(`/admin/product/spuSaleAttrList/${spuId}`)
)

// 7.根据spuId 获取imgList列表
export const reqSpuImageList = (spuId:number) => (
  request.get<any,SpuImgListType>(`/admin/product/spuImageList/${spuId}`)
)